package com.xiaofei.test;

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.junit.Test;


public class Demo01 {
	@Test
	/*使用二分搜索法搜索指定列表，以获得指定对象。在进行此调用之前，
	必须根据列表元素的自然顺序对列表进行升序排序（通过 sort(List) 方法）。
	如果没有对列表进行排序，则结果是不确定的。*/
	public void testCollections(){
		List<Integer> list = new ArrayList<Integer>();
		list.add(15);
		list.add(12);
		list.add(19);
		list.add(6);
		list.add(77);
		System.out.println(list);
		Collections.sort(list); //进行升序排序
		System.out.println(list);
		int binarySearch = Collections.binarySearch(list,19);//二分查找19的索引
		System.out.println(binarySearch);
		File  file = new File("d://");
		
	}
	
	@Test
	public void testForeach(){
		String [] s={"sd","lsdk","sld"}; 
		Set<String> set = new LinkedHashSet<String>();//去重复的有序的set集合
		set.add("褚");
		set.add("鹏");
		set.add("飞");
		//对字符传数组用增强for循环
		for (String string : s) {
			System.out.println(string);
			
		}
		//对set集合用增强for循环
		for (String string : set) {
			System.out.println(string);
		}
		Set<String> set1 = new HashSet<String>();
		set1.add("wo");
		set1.add("shi");
		set1.add("zhu");
		//set集合有2种遍历方法 一种是迭代器，一种是增强for循环，不能用普通的for循环，因为没有get()方法
		Iterator<String> iterator = set1.iterator();
		while(iterator.hasNext()){
			System.out.println(iterator.next());
		}
		//数组int类型也可以使用增强for
		int[] arr={12,14,5,125,4};
		for (int i : arr) {
			System.out.println(i);
		}
		
		//map集合使用增强for循环
		Map<String,String> map = new LinkedHashMap<String,String>();
		map.put("12", "十二");
		map.put("11", "十一");
		map.put("10", "十");
		map.put("9", "九");
		map.put("8", "八");
		
		Set<Entry<String, String>> entrySet = map.entrySet();
		for ( Entry<String, String> entry : entrySet) {
			System.out.println(entry.getKey()+":"+entry.getValue());
		}
		
	}
	
	@Test
	//测试枚举类1
	public void testMnum(){
	System.out.println(Colors.red.getName()); 
	System.out.println(Constants.VipAccountStatus.valid.getName());
	}
	@Test
	//测试枚举类2
	//switch使用的数据类型：byte，char，shot，int，String，枚举类型
	//case后面不用枚举类.枚举值的形式，直接是枚举值就可以
	public void testMnumJdbcContect() {
		Jdbc jdbc = Jdbc.sqlserver;
		switch (jdbc) {
		case mysql:
			System.out.println(jdbc.getName() + "连接数据库");
			break;

		case oracle:
			System.out.println(jdbc.getName() + "连接数据库");
			break;

		default:
			System.out.println(jdbc.getName() + "连接数据库");
			break;
		}
	}
}
